package com.pattern.once.proxy.d;

import com.pattern.once.proxy.s.GamePlayerImpl;
import com.pattern.once.proxy.s.IGamePlayer;

import javax.xml.ws.Service;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;


/***
 *  jdk 动态代理实现
 *  1 定义代理类 实现 invokecation  接口  实现 invoke 方法
 *  2 使用 Proxy 类  .newProxyInstance 方法 传入（被代理类，代理类对象） 得到被代理对象接口
 */

public class TestMain {
    private String na = "sssssss";
    class B {
        public  void b(String[] args) {
            String na = TestMain.this.na;
            System.out.println(na);
        }
    }
    public static void main(String[] args) {
//        IGamePlayer iGamePlayer = new GamePlayerImpl();
//
//        IGamePlayer iGamePlayer1 = (IGamePlayer) Proxy.newProxyInstance(
//                iGamePlayer.getClass().getClassLoader(),
//                new Class[]{IGamePlayer.class},
//                (proxy, method, args1) -> {
//                    System.out.println("方法执行前");
//                    Object invoke = method.invoke(iGamePlayer, args1);
//                    System.out.println("方法执行后");
//                    return invoke;
//                });
//        //代理执行上交班费的方法
//        iGamePlayer1.login();

    }



}
